home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_geomview.idb / usr / freeware / lib / geomview / modules / sgi / gvclock.z / gvclock
Encoding:
Text File  |  1999-01-26  |  4.6 KB  |  171 lines

  1. #!/bin/sh
  2.  
  3. date | \
  4. awk '
  5. {
  6.     unitcube = \
  7.     "OFF\n" \
  8.     "8 6 0\n" \
  9.     "-1 -1 -1\n" \
  10.     "1 -1 -1\n" \
  11.     "1 1 -1\n" \
  12.     "-1 1 -1\n" \
  13.     "-1 -1 1\n" \
  14.     "1 -1 1\n" \
  15.     "1 1 1\n" \
  16.     "-1 1 1\n" \
  17.     "4 0 1 2 3\n" \
  18.     "4 4 5 6 7\n" \
  19.     "4 0 4 7 3\n" \
  20.     "4 0 1 5 4\n" \
  21.     "4 1 5 6 2\n" \
  22.     "4 2 6 7 3\n";
  23.  
  24.   printf("(progn ")
  25.  
  26.   # Print out the clock face
  27.   printf("(geometry face { LIST ");
  28.   printf("{ INST unit { OFF 8 6 0 \n")
  29.   printf("-.05 .9 -.3\n")
  30.   printf(".05 .9 -.3\n")
  31.   printf(".05 1.1 -.3\n")
  32.   printf("-.05 1.1 -.3\n")
  33.   printf("-.05 .9 -.1\n")
  34.   printf(".05 .9 -.1\n")
  35.   printf(".05 1.1 -.1\n")
  36.   printf("-.05 1.1 -.1\n")
  37.   printf("4 0 1 2 3\n")
  38.   printf("4 4 5 6 7\n")
  39.   printf("4 0 4 7 3\n")
  40.   printf("4 0 1 5 4\n")
  41.   printf("4 1 5 6 2\n")
  42.   printf("4 2 6 7 3\n")
  43.   printf("}\ntlist\n")
  44.  
  45.   # Not all versions of awk have sin/cos functions, so...
  46.   split("0 .5 .866 1 .866 .5", table);
  47.   for(i = 0; i < 6; i++) { sn[i] = table[i+1];  sn[i+6] = -sn[i]; }
  48.   for(i = 0; i < 12; i++) cs[i] = sn[(i+3) % 12];
  49.  
  50.   for (i = 1; i < 12; ++i) {
  51.     # ang = i * 3.14159 / 6.0;
  52.     printf("%g %g 0 0\n", cs[i], -sn[i]);
  53.     printf("%g %g 0 0\n", sn[i], cs[i]);
  54.     printf("0 0 1 0\n");
  55.     printf("0 0 0 1\n\n");
  56.   }
  57.   printf("}\n");
  58.   printf("{appearance {material {diffuse 0 .75 .75}}");
  59.   printf("INST\n");
  60.   printf("unit OFF\n");
  61.   printf("20 12 30\n");
  62.   printf("    1.214124 0.000000 1.589309\n");
  63.   printf("    0.375185 1.154701 1.589309\n");
  64.   printf("    -0.982247 0.713644 1.589309\n");
  65.   printf("    -0.982247 -0.713644 1.589309\n");
  66.   printf("    0.375185 -1.154701 1.589309\n");
  67.   printf("    1.964494 0.000000 0.375185\n");
  68.   printf("    0.607062 1.868345 0.375185\n");
  69.   printf("    -1.589309 1.154701 0.375185\n");
  70.   printf("    -1.589309 -1.154701 0.375185\n");
  71.   printf("    0.607062 -1.868345 0.375185\n");
  72.   printf("    1.589309 1.154701 -0.375185\n");
  73.   printf("    -0.607062 1.868345 -0.375185\n");
  74.   printf("    -1.964494 0.000000 -0.375185\n");
  75.   printf("    -0.607062 -1.868345 -0.375185\n");
  76.   printf("    1.589309 -1.154701 -0.375185\n");
  77.   printf("    0.982247 0.713644 -1.589309\n");
  78.   printf("    -0.375185 1.154701 -1.589309\n");
  79.   printf("    -1.214124 0.000000 -1.589309\n");
  80.   printf("    -0.375185 -1.154701 -1.589309\n");
  81.   printf("    0.982247 -0.713644 -1.589309\n");
  82.   printf("    5 0 1 2 3 4\n");
  83.   printf("    5 0 5 10 6 1\n");
  84.   printf("    5 1 6 11 7 2\n");
  85.   printf("    5 2 7 12 8 3\n");
  86.   printf("    5 3 8 13 9 4\n");
  87.   printf("    5 4 9 14 5 0\n");
  88.   printf("    5 15 10 5 14 19\n");
  89.   printf("    5 16 11 6 10 15\n");
  90.   printf("    5 17 12 7 11 16\n");
  91.   printf("    5 18 13 8 12 17\n");
  92.   printf("    5 19 14 9 13 18\n");
  93.   printf("    5 19 18 17 16 15\n");
  94.   printf("transform\n");
  95.   printf("0.07  0  0    0\n");
  96.   printf("0   0.07  0   0\n");
  97.   printf("0  0   0.07   0\n");
  98.   printf("0 1 -.2 1\n");
  99.   printf("}\n");
  100.  
  101.   printf("  })\n");
  102.  
  103.  
  104.   # Hour hand
  105.   printf("(geometry hour { INST unit {")
  106.   print unitcube;
  107.   printf("}\n")
  108.   printf("tlist\n")
  109.   printf(".12 0 0 0\n")
  110.   printf("0 .28 0 0\n")
  111.   printf("0 0 .05 0\n")
  112.   printf("0 .22 0 1\n");
  113.   printf("})")
  114.  
  115.   # Minute hand
  116.   printf("(geometry minute { INST unit {")
  117.   print unitcube;
  118.   printf("}\n")
  119.   printf("tlist\n")
  120.   printf(".07 0 0 0\n")
  121.   printf("0 .55 0 0\n")
  122.   printf("0 0 .05 0\n")
  123.   printf("0 .45 .1 1\n")
  124.   printf("})\n");
  125.  
  126.   # Second hand
  127.   printf("(geometry second { INST unit {")
  128.   print unitcube;
  129.   printf("}\n")
  130.   printf("tlist\n")
  131.   printf(".02 0 0 0\n")
  132.   printf("0 .6 0 0\n")
  133.   printf("0 0 .05 0\n")
  134.   printf("0 .45 .2 1\n")
  135.   printf("})\n");
  136.  
  137.   printf("(normalization face none)")
  138.   printf("(normalization hour none)")
  139.   printf("(normalization minute none)")
  140.   printf("(normalization second none)")
  141.  
  142.   printf("(bbox-draw face no)")
  143.   printf("(bbox-draw hour no)")
  144.   printf("(bbox-draw minute no)")
  145.   printf("(bbox-draw second no)")
  146.  
  147.   printf("(merge-ap face {appearance +edge material { diffuse 0 0 .7}})")
  148.   printf("(merge-ap hour {appearance +edge material { diffuse .54 .15 1}})")
  149.   printf("(merge-ap minute {appearance +edge material { diffuse .13 .82 .51}})")
  150.   printf("(merge-ap second {appearance +edge material { diffuse .82 0 0 }})")
  151.  
  152.   time = substr($4, 7, 2) + 0.0;
  153.   printf("(transform-set second world world rotate 0 0 %g)", \
  154.     -(time / 60.0) * 3.14159 * 2.0);
  155.  
  156.   time = time + (substr($4, 4, 2) + 0.0)*60.0;
  157.   printf("(transform-set minute world world rotate 0 0 %g)", \
  158.     -(time / 3600.0) * 3.14159 * 2.0);
  159.  
  160.   time += (substr($4, 1, 2)%12) * 3600.0;
  161.   printf("(transform-set hour world world rotate 0 0 %g)", \
  162.     -(time / 43200.0) * 3.14159 * 2.0);
  163.  
  164.   printf("(transform-incr hour world world rotate 0 0 -3.14159 21600)")
  165.   printf("(transform-incr minute world world rotate 0 0 -3.14159 1800)")
  166.   printf("(transform-incr second world world rotate 0 0 -3.14159 30)")
  167.  
  168.   printf(")")
  169. }
  170. '
  171.